<?php
class M_ticket extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener los tickets de servicios de clientes existentes, pero no los borrados (-1)
	function buscar($restriccion=null, $limite=null){
		$consulta = $this->db->query("SELECT ticket.*,
		                                     cliente.idCliente as idCliente,
											 cliente.apellido as apellidoCliente,
											 cliente.nombre as nombreCliente,
											 servicio.idServicio as idServicio,
											 servicio.nombre as nombreServicio,
											 DATE_FORMAT(ticket.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada,
											 DATE_FORMAT(ticket.fechaCreacion,'%d/%m/%Y') AS fechaFormateada, 
											 DATE_FORMAT(ticket.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM ticket, servicioxcliente, servicio, cliente
									  WHERE ticket.idSxC=servicioxcliente.idSxC AND servicioxcliente.idServicio=servicio.idServicio AND servicioxcliente.idCliente=cliente.idCliente AND ticket.estado<>-1 AND servicioxcliente.estado<>-1 AND cliente.estado<>-1 $restriccion
									  ORDER BY ticket.idTicket DESC
									  $limite");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar un ticket de servicio de un cliente
	function eliminar($idTicket=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `ticket` 
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `ticket`.`idTicket` = " . $this->db->escape($idTicket) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear un ticket de servicio de cliente
	function crear($idSxC=null, $asunto=null, $mensaje=null, $respuesta=null, $prioridad=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `ticket` (`idTicket`, `idSxC`, `asunto`, `mensaje`, `respuesta`, `prioridad`, `fechaCreacion`, `estado`, `idCreador`) VALUES 
											   (NULL,".$this->db->escape($idSxC).",".$this->db->escape($asunto).",".$this->db->escape($mensaje).",".$this->db->escape($respuesta).",".$this->db->escape($prioridad).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver un ticket de servicio del cliente en particular usado generalmente en el formulario de modificar
	function get($idTicket=null){
		$consulta = $this->db->query("SELECT ticket.*, cliente.idCliente as idCliente, cliente.apellido as apellidoCliente, cliente.nombre as nombreCliente, servicio.nombre as nombreServicio
									  FROM ticket, servicioxcliente, cliente, servicio
									  WHERE ticket.idSxC=servicioxcliente.idSxC AND servicioxcliente.idCliente=cliente.idCliente AND servicioxcliente.idServicio=servicio.idServicio AND ticket.estado<>-1 AND servicioxcliente.estado<>-1 AND cliente.estado<>-1 AND ticket.idTicket=".$this->db->escape($idTicket)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver un tickets anterior o siguiente a uno en particular 
	function getContiguo($idTicket=null, $cant=null){
		do{			
			$idTicket+=$cant;
			$consulta = $this->db->query("SELECT *
										  FROM ticket
										  WHERE idTicket=".$this->db->escape($idTicket)."
										  LIMIT 1");
			if($consulta->num_rows == 0)
				return(0);
			
		}while($consulta->row()->estado=='-1');
		
		return($consulta->row()->idTicket);
	}
	
	//Este metodo se utiliza para modificar un ticket de servicio de un cliente
	function modificar($idTicket=null, $asunto=null, $mensaje=null, $respuesta=null, $prioridad=null, $estado=null){
		$consulta = $this->db->query("UPDATE `ticket`
									 SET `asunto` = ". $this->db->escape($asunto) .",
										 `mensaje` = ". $this->db->escape($mensaje) .",
										 `respuesta` = ". $this->db->escape($respuesta) .",
										 `prioridad` = ". $this->db->escape($prioridad) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `ticket`.`idTicket` = " . $this->db->escape($idTicket) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>